﻿using System;
using System.ServiceModel;

namespace MvePublicService
{
	/*
	 * 日本SGI株式会社
	 * ヨハンソン・ヘンリク
	 * johansson@sgi.co.jp
	 * 
	 * Change Log:
	 * ---------------------------------------------------------------------------
	 * 2009.01.07	Johansson Henrik		Class Created.
	 * 2009.01.15							Marked ClipSegments as Ignore. This operation
	 *										was never called on the original Service, so
	 *										it should be safe to ignore it here. The Operation
	 *										is still included in the contract, but it will 
	 *										Throw if any one tries to call it.
	 * 2009.01.16							Changed name to match Pascal casing.
	 */

	/// <summary>
	/// The Service Contract that defines the operations available
	/// in the Service.
	/// </summary>
	/// <remarks>INSERT:Creds</remarks>
	[ServiceContract]
	public interface IMvePublicService
	{
		#region Not Implemented Contracts
		#endregion

		#region Implemented Contracts
		#endregion

		#region Broken Contracts


		/// <summary>
		///	What is the difference between this one and the Clip($clipId)??
		///	Also, it would appear this method is never called.
		///	Ignore! 
		/// </summary>
		/// <remarks>Not Implemented.</remarks>
		[OperationContract]
		string QueryClips(Guid userId);

		/// <summary>
		/// Cannot confirm output, server returns 404
		/// Confirm this output by the data that came out of the original server.
		/// Use the MeetServerConnector.cs for this.
		/// it would appear this method is never called.
		/// Ignore!
		/// </summary>
		/// <remarks>Not Implemented.</remarks>
		[OperationContract]
		string ClipSegments(Guid userId, int clipId);

		#endregion

		#region Tested Contracts

		/// <summary>
		/// string QuerySegmentByKeyword(Guid userId, string keyword);
		/// </summary>
		[OperationContract]
		string QuerySegmentByKeyword(Guid userId, string keyword);

		/// <summary>
		/// string RelatedSegments(Guid userId, int segmentId);
		/// </summary>
		[OperationContract]
		string RelatedSegments(Guid userId, int segmentId);

		/// <summary>
		/// bool SaveMap(Guid userId, string map);
		/// </summary>
		[OperationContract]
		bool SaveMap(Guid userId, string map);

		/// <summary>
		/// string LoadMap(Guid userId);
		/// </summary>
		[OperationContract]
		string LoadMap(Guid userId);

		/// <summary>
		/// bool AddKeywordToIdeaBasket(Guid userId, string keyword);
		/// </summary>
		[OperationContract]
		bool AddKeywordToIdeaBasket(Guid userId, string keyword);

		/// <summary>
		/// bool DeleteIdeaBasketKeyword(Guid userId, string keyword);
		/// </summary>
		[OperationContract]
		bool DeleteIdeaBasketKeyword(Guid userId, string keyword);

		/// <summary>
		/// Guid LogOn(string logonId, string password);
		/// </summary>
		[OperationContract]
		Guid LogOn(string logonId, string password);

		/// <summary>
		/// bool LogOff(Guid userId);
		/// </summary>
		[OperationContract]
		bool LogOff(Guid userId);

		/// <summary>
		/// bool AddBookmark(Guid userId, int segmentId);
		/// </summary>
		[OperationContract]
		bool AddBookmark(Guid userId, int segmentId);

		/// <summary>
		/// bool DeleteBookmark(Guid userId, int segmentId);
		/// </summary>
		[OperationContract]
		bool DeleteBookmark(Guid userId, int segmentId);

		/// <summary>
		/// string QueryBookmarks(Guid userId);
		/// </summary>
		[OperationContract]
		string QueryBookmarks(Guid userId);

		/// <summary>
		/// bool AddKeywordToSegment(Guid userId, int segmentId, string keyword);
		/// </summary>
		[OperationContract]
		bool AddKeywordToSegment(Guid userId, int segmentId, string keyword);

		/// <summary>
		/// bool DeleteKeyword(Guid userId, int keywordId);
		/// </summary>
		[OperationContract]
		bool DeleteKeyword(Guid userId, int keywordId);

		/// <summary>
		/// string QueryKeywords(Guid userId);
		/// </summary>
		[OperationContract]
		string QueryKeywords(Guid userId);

		/// <summary>
		/// string Clip(Guid userId, int clipId);
		/// </summary>
		[OperationContract]
		string Clip(Guid userId, int clipId);

		/// <summary>
		/// string ClipBySegmentId(Guid userId, int segmentId);
		/// </summary>
		[OperationContract]
		string ClipBySegmentId(Guid userId, int segmentId);

		/// <summary>
		/// string GetRelations(Guid userId, int segmentId);
		/// </summary>
		[OperationContract]
		string GetRelations(Guid userId, int segmentId);

		#endregion
	}
}
